{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "469/469 [==============================] - 26s 54ms/step - loss: 1.1985 - accuracy: 0.7065\n",
      "Epoch 2/10\n",
      "469/469 [==============================] - 27s 57ms/step - loss: 0.4590 - accuracy: 0.8777\n",
      "Epoch 3/10\n",
      "469/469 [==============================] - 28s 59ms/step - loss: 0.3470 - accuracy: 0.9038\n",
      "Epoch 4/10\n",
      "469/469 [==============================] - 28s 59ms/step - loss: 0.2884 - accuracy: 0.9190\n",
      "Epoch 5/10\n",
      "469/469 [==============================] - 24s 52ms/step - loss: 0.2476 - accuracy: 0.9295\n",
      "Epoch 6/10\n",
      "469/469 [==============================] - 26s 56ms/step - loss: 0.2163 - accuracy: 0.9381\n",
      "Epoch 7/10\n",
      "469/469 [==============================] - 27s 58ms/step - loss: 0.1917 - accuracy: 0.9448\n",
      "Epoch 8/10\n",
      "469/469 [==============================] - 24s 52ms/step - loss: 0.1719 - accuracy: 0.9512\n",
      "Epoch 9/10\n",
      "469/469 [==============================] - 28s 60ms/step - loss: 0.1558 - accuracy: 0.9556\n",
      "Epoch 10/10\n",
      "469/469 [==============================] - 30s 65ms/step - loss: 0.1426 - accuracy: 0.9594\n",
      "模型评估的精确度： 0.9612500071525574\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "import matplotlib.pyplot as plt\n",
    "from keras import Sequential\n",
    "from keras.datasets import mnist\n",
    "from keras.layers import Dense, Conv2D, MaxPooling2D, Flatten\n",
    "from keras.utils import np_utils\n",
    "\n",
    "# 加载数据\n",
    "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n",
    "x_train = x_train.astype(\"float32\") / 255\n",
    "x_test = x_test.astype(\"float32\") / 255\n",
    "\n",
    "y_train = np_utils.to_categorical(y_train, num_classes=10)\n",
    "y_test = np_utils.to_categorical(y_test, num_classes=10)\n",
    "\n",
    "# 建立模型\n",
    "# 第一层为6个5X5卷积核，步长为1*1，不扩展边界，并输入单通道的灰度图像，输入图像尺寸为28*28；\n",
    "# 第二层为2X2的最大值池化层，步长为2X2；\n",
    "# 第三层为16个5X5卷积核，步长为1*1，不扩展边界；\n",
    "# 第四层为2X2的最大值池化层，步长为2X2；\n",
    "# 第五层为展平层，把前面输出的二维数据矩阵打开展开成一维数据，和全连接层对接\n",
    "# 第六层为全连接层，120个节点；\n",
    "# 第七层为全连接层，84个节点；\n",
    "# 第八层为输出层，激活函数为softmax。\n",
    "model = Sequential()\n",
    "model.add(Conv2D(filters=6, kernel_size=(5, 5), padding='valid', input_shape=(28, 28, 1), activation='tanh'))\n",
    "model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "model.add(Conv2D(filters=16, kernel_size=(5, 5), padding='valid', activation='tanh'))\n",
    "model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "model.add(Flatten())\n",
    "model.add(Dense(120, activation='tanh'))\n",
    "model.add(Dense(84, activation='tanh'))\n",
    "model.add(Dense(10, activation='softmax'))\n",
    "\n",
    "# 模型的编译\n",
    "model.compile(optimizer=\"sgd\", loss='categorical_crossentropy', metrics=['accuracy'])\n",
    "history = model.fit(x_train, y_train, batch_size=128, epochs=10, verbose=1)\n",
    "\n",
    "# 评估模型\n",
    "eva = model.evaluate(x_train, y_train, batch_size=128, verbose=0)\n",
    "print('模型评估的精确度：', eva[1])\n",
    "\n",
    "# 画图\n",
    "plt.plot(history.history['loss'])\n",
    "plt.plot(history.history['accuracy'])\n",
    "plt.legend(['loss', 'accuracy'])\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
